package com.zmn.oms.business.interfaces.base;

import com.zmn.base.common.data.common.dro.tags.TagsDRO;
import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.common.vo.KVDict;
import com.zmn.oms.model.entity.advancequote.AdvanceQuoteOpenQuery;

import java.util.List;

/**
 * 类描述：权限判断接口
 *
 * @author xiangyang
 * @date 2018/12/17 20:03
 */
public interface BaseCodeService {

    /**
     * 渠道是否同步给58
     *
     * @param channelId
     * @return
     */
    boolean isChannelOrderSyncTo58(Integer channelId);

    /**
     * 获取渠道录入类型
     *
     * @param plat
     * @param channelId
     * @return
     */
    Integer getChannelInputType(Integer plat, Integer channelId, Integer defaultInputType);

    /**
     * 获取渠道ID
     *
     * @param plat
     * @param channelBaseCodeId
     * @return
     */
    Integer getChannelId(Integer plat, Integer channelBaseCodeId) throws OmsBaseException;

    /**
     * 城市 是否需要完成码
     */
    boolean needSecurityCode(Integer plat, Integer cityId, Integer agent);

    /**
     * 城市 是否开通上门扫码
     *
     * @param cityId
     * @return
     */
    boolean needVisitCode(Integer cityId);

    /**
     * 标准收费单
     *
     * @param plat
     * @param cityId
     * @param channelId
     * @return
     */
    Integer getStandardPrice(Integer plat, Integer cityId, Integer channelId);

    /**
     * 城市派单权重
     * 距离,手头单,最大手头单,当日成功单
     */
    String getDistributeWeight(Integer plat, Integer cityId);

    /**
     * 城市 是否强制定位
     */
    boolean forceLocation(Integer plat, Integer cityId);

    /**
     * 城市是否支全家享会员
     */
    boolean supportSaleMember(Integer plat, Integer cityId);

    /**
     * 全家享会员服务电话
     */
    String getMemberServicePhone(Integer plat);

    /**
     * 会员单可以操作的距离,单位米
     */
    Integer getMemberOrderOperationDistance(Integer plat);

    /**
     * 渠道是否发送短信
     */
    boolean needSendSms(Integer channelId);

    /**
     * 天猫产品对应啄木鸟产品 服务项名称
     */
    String getTmallServiceItemName(Integer productId);

    /**
     * 获取列表
     *
     * @param plat
     * @param oneTypeId
     * @param twoTypeId
     * @param threeTypeId
     * @return
     */
    List<KVDict<Integer>> getBaseCodeMap(Integer plat, Integer oneTypeId, Integer twoTypeId, Integer threeTypeId);

    List<KVDict<Integer>> getBaseCodeMap(Integer plat, Integer oneTypeId, Integer twoTypeId);

    List<KVDict<Integer>> getBaseCodeMap(Integer plat, Integer oneTypeId);

    TagsDRO getOneBaseCodeMap(Integer plat, Integer oneTypeId, Integer twoTypeId);

    /**
     * 获取二级类型id
     *
     * @param plat
     * @param oneTypeId
     * @return
     */
    Integer getOneTwoTypeId(Integer plat, Integer oneTypeId);

    /**
     * @param plat
     * @param oneTypeId
     * @param twoTypeId
     * @return
     */
    List<TagsDRO> listBaseCodeMap(Integer plat, Integer oneTypeId, Integer twoTypeId, Integer threeTypeId);

    /**
     * 获取配置
     *
     * @return
     */
    List<KVDict<Integer>> listInputRemark();

    /**
     * 开通提前报价试点配置
     *
     * @param advanceQuoteOpenQuery
     * @return
     */
    boolean isOpenAdvanceQuote(AdvanceQuoteOpenQuery advanceQuoteOpenQuery);
}
